package com.guanyu.u2cache.annotation;

import com.guanyu.u2cache.enums.CacheType;

import java.lang.annotation.*;

/**
 * 缓存清空:
 * 1、先清空本地缓存
 * 2、再清空分布式缓存
 * 3、再发送缓存清空通知
 *
 * @author zhouyunjian
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface U2CacheEvict {


    String[] cacheNames() default {"localRemoteCache"};

    String key() default "";

    /**
     * 缓存策略：
     * CacheType.LEVEL1CACHE-一级缓存/本地缓存
     * CacheType.LEVEL2CACHE-二级缓存/远程缓存
     * CacheType.LEVEL1TOL2CACHE-一级+二级缓存
     *
     * @return
     */
    CacheType cacheType() default CacheType.LEVEL1TO2;

    /**
     * 缓存事件:
     * 缓存事件绑定缓存名，多对多关系，缓存事件清空则缓存名清除
     *
     * @return
     */
    String[] listenEventName() default "";

}
